# 74. Django简单上传文件

# 上传文件

通过另一种网络传输方式:FILES

# 前端文件

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-Type" charset="UTF-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>上传文件</title>
</head>
<body>


<h1>上传文件</h1>
<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="file_name">
    <input type="submit">
</form>

</body>
</html>

# 后端文件

def upload(request):
    file_obj = request.FILES.get('file_name')  # 获取前端传递过来的上传文件值名为file_name的数据
    print(file_obj.name)  # 打印上传文件的文件名
    # 判断上传文件名是否存在
    file_name = file_obj.name
    if os.path.exists(os.path.join(settings.BASE_DIR, file_name)):
        # 如果存在同名的文件,在后面加上2
        name, suffix = file_name.split('.')
        name += '2'
        file_name = name + '.' + suffix
    # 从上传文件对象里 一点一点读取数据,写到本地
    with open(file_name, 'wb') as f:
        # 从上传文件对象里 一点一点读取数据
        for chunk in file_obj.chunks():
            f.write(chunk)
    return render(request, 'upload.html')